import { replaceAllStyle } from '@/utils/style';
import GoodListData from '@/views/2025/Front/data/block/GoodListData';


// 商品样式列表选项
export const goodTypeOptions = [
  {
    label: '样式一',
    value: '1'
  },
  {
    label: '样式二',
    value: '2'
  },
  {
    label: '样式三',
    value: '3'
  },
  {
    label: '样式四',
    value: '4'
  },
  {
    label: '样式五',
    value: '5'
  },
]

/**
 * @description 切换商品列表的事件
 * 切换样式 --> 更新一块内容 --> 更新 多个 style样式
 * @param { string } newType 样式类型 '1'
 * @param { array } typeKeys 样式类型所在的键值列表,通过typeKeys修改值 ['exhibition', 'type']
 * @param { string } blockKey 模块key，通过blockKey修改值，通过blockKey区分 商品展示、商品推荐等 'exhibition'
 * @param { Function } onConfigEvent 修改响应式数据的函数
 * @param { object } form 表单实例
 * @param { string } actKey 模块   
 */
export function switchGoodType(newType, typeKeys, blockKey, onConfigEvent, form, actKey) {

  // [0] 先更新type值
  onConfigEvent(typeKeys, newType)

  // [1] 获取表单值
  let formData = form.getFieldsValue(true)

  // 获取 块的值
  let blockData = JSON.parse(JSON.stringify(GoodListData[newType]))

  // 给所有classname增加外层容器 
  for (const key in blockData) {
    let classname = blockData[key].classname

    // ps：只有样式的对象才处理。其它属性不动
    if (classname) {

      // classname: ".good-list-1" -> ".exhibition .good-list-1"
      let classnames = classname.split(',')
      let newClassnames = classnames.map(item => `.${blockKey} ${item}`)
      let newClassname = newClassnames.join(',')

      // key: list_box -> exhibition_list_box
      let newKey = `${blockKey}_${key}`

      // 修改key 和 classname
      blockData[newKey] = blockData[key]
      blockData[newKey].classname = newClassname

      // 把旧的删除掉
      delete blockData[key]
    }
  }

  //更新 块的新值 
  formData[blockKey] = blockData

  // 更新表单值
  form.setFieldsValue(formData)

  // [2] 更新模板数据
  onConfigEvent([], formData)

  // [3] 更新style文件
  replaceAllStyle(actKey, formData)
}